/// 动态类型枚举
enum PostType {
  /// 纯文本
  text('text', '纯文本'),
  
  /// 文章
  article('article', '文章'),
  
  /// 视频
  video('video', '视频'),
  
  /// 视频集
  videoCollection('video_collection', '视频集'),
  
  /// 商品/服务
  service('service', '商品/服务');

  const PostType(this.value, this.displayName);

  /// 数据库存储值
  final String value;
  
  /// 显示名称
  final String displayName;

  /// 获取数据库存储值（别名）
  String get dbValue => value;
  
  /// 获取描述（别名）
  String get description => displayName;

  /// 从字符串值获取枚举
  static PostType fromValue(String value) {
    for (PostType type in PostType.values) {
      if (type.value == value) {
        return type;
      }
    }
    return PostType.text; // 默认返回文本类型
  }

  /// 获取所有类型的显示名称列表
  static List<String> getDisplayNames() {
    return PostType.values.map((type) => type.displayName).toList();
  }

  /// 获取所有类型的值列表
  static List<String> getValues() {
    return PostType.values.map((type) => type.value).toList();
  }
}